#pragma once


template<typename T>
class IntrusiveList
{
public:
	struct ListEntry
	{
	public: 
		struct ListEntry * pPrev;
		struct ListEntry * pNext;
		ListEntry()
		{
			NOTIMPL
		}
		~ListEntry()
		{
			NOTIMPL
		}
		XBOOL IsOnList()
		{
			NOTIMPL
		}

	};

	struct Iterator
	{
	public: 
		struct ListEntry * pCurr;
		XUINT32 offsetToLink;
		T * operator*()
		{
			NOTIMPL
		}
		void operator++()
		{
			NOTIMPL
		}
		XUINT32 operator==(const struct Iterator & rhs)
		{
			NOTIMPL
		}
		XUINT32 operator!=(const struct Iterator & rhs)
		{
			NOTIMPL
		}
	};

public: 
	struct ListEntry head;  


public: 
	struct ListEntry tail;
	IntrusiveList()
	{
		NOTIMPL
	}
	struct Iterator Begin(XUINT32 offsetToLink)
	{
		NOTIMPL
	}
	struct Iterator End()
	{
		NOTIMPL
	}
	void PushBack(struct ListEntry * pEntry)
	{
		NOTIMPL
	}
	void Remove(struct ListEntry * pEntry)
	{
		NOTIMPL
	}
	void Clear()
	{
		NOTIMPL
	}
	XBOOL IsEmpty()
	{
		NOTIMPL
	}
	T * GetHead(XUINT32)
	{
		NOTIMPL
	}
};